(define (A x y)
  (cond ((= y 0) 0)
        ((= x 0) (* 2 y))
        ((= y 1) 2)
        (else (A (- x 1)
                 (A x (- y 1))))))

;(A 0 n)
;2*n

;(A 1 10)
;(A 0 (A 1 9))
;(* 2 (A 1 9))
;(* 2 (* 2 (A 1 8)))
;(* 2 (* 2 (* 2 (A 1 7))))
;(* 2 (* 2 (* 2 (* 2 (A 1 6)))))
;(* 2 (* 2 (* 2 (* 2 (* 2 ( A 1 5))))))
;...
;...
;(* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (A 1 1))))))))))
;(* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 2))))))))))
;(* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 4))))))))))
;(* 2 (* 2 (* 2 (* 2 (* 2 (* 2 (* 2 8)))))))))
;...
;...
;1024
;
;(A 1 n) => 2**n
;
;(A 2 4)
;(A 1 (A 2 3)
;2**(A 2 3)
;2**(2**(A 2 2))
;2**(2**(2**(A 2 1)))
;2**(2**(2**2))
;2^4   where ^ is meta power
;(A 2 n)  => 2^n
;
;(A 3 3)
;(A 2 (A 3 2))
;2^(A 3 2)
;2^(2^(A 3 1))
;2^(2^(2))
;
;2^^3  where ^^ is meta meta power
;(A 3 n) => 2^^n
;
